Graphical flows are diagrams that represent relationships between various entities. Shapes typically are used to represent the entities, and arrows often are used to represent the relationships between the entities. One example type of graphical flow is a flowchart. In a flowchart, shapes represent steps in a process, and arrows represent flow of control between the steps. Another example type of graphical flow is a state machine. In a state machine, shapes represent states of a system, and arrows represent transitions between the states. Each transition includes an action that is triggered by an event or a condition. The event or condition that triggers a transition is denoted by the starting point of the arrow that represents that transition.
Graphical software programs commonly are used to generate and/or modify graphical flows. For instance, a user may interact with such a graphical software program via an interface to place shapes and to draw arrows between those shapes. However, conventional graphical software programs often limit a number of points on each shape to which arrows may be connected to a relative small predetermined number (e.g., four), and such points often are fixed at predetermined locations on the shape (e.g., at a midpoint of each side of the shape).
It may be desirable to create a substantial number of connections between shapes. Moreover, it may be desirable for connections from a specified shape to start at different points on a border of the specified shape. Accordingly, a number of connections from the specified shape may exceed a number allowed by a conventional graphical software program. In the context of a state machine, a number of possible events and/or conditions that are capable of triggering a transition from a specified state may exceed a number of points on a corresponding shape in the graphical flow to which arrows may be connected.